//
//  DMFacebookManager.h
//  DualMediationSDK
//
//  Facebook功能管理器 - 重构版本
//  支持DMDelegate回调机制
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "DMFacebookTypes.h"
#import "../../Core/DMLifecycleManager.h"
NS_ASSUME_NONNULL_BEGIN

/**
 * Facebook管理器 - 重构版本
 * 使用DMDelegate回调机制替代WDCallBack
 */
@interface DMFacebookManager : NSObject

@property (nonatomic, strong) DMFacebookUserInfo *cachedUserInfo;
@property (nonatomic, copy) void(^shareCallback)(DMFacebookShareResult * _Nullable result, NSError * _Nullable error);

/**
 * 单例访问
 */
+ (instancetype)sharedManager;

#pragma mark - 初始化和配置

/**
 * 初始化Facebook SDK
 * @param application 应用实例
 * @param launchOptions 启动选项
 * @return 是否初始化成功
 */
+ (BOOL)initializeWithApplication:(UIApplication *)application launchOptions:(NSDictionary *)launchOptions;

/**
 * 处理URL回调
 * @param app 应用实例
 * @param url 回调URL
 * @param options 选项字典
 * @return 是否处理成功
 */
+ (BOOL)handleOpenURL:(UIApplication *)app url:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;

#pragma mark - 登录功能

/**
 * Facebook登录
 * 使用DMDelegate回调机制
 */
+ (void)login;

/**
 * Facebook登出
 */
+ (void)logout;

/**
 * 检查登录状态
 * @return 是否已登录
 */
+ (BOOL)isLoggedIn;

/**
 * 获取当前访问令牌
 * @return 访问令牌字符串，未登录时返回nil
 */
+ (nullable NSString *)currentAccessToken;

#pragma mark - 用户信息

/**
 * 获取用户信息
 * 使用DMDelegate回调机制
 */
+ (void)getUserInfo;

/**
 * 获取缓存的用户信息
 * @return 用户信息对象，未登录或无缓存时返回nil
 */
+ (nullable DMFacebookUserInfo *)getCachedUserInfo;

#pragma mark - 分享功能

/**
 * Facebook分享链接
 * @param title 分享标题
 * @param url 分享链接
 * @param description 分享内容描述
 */
+ (void)shareWithTitle:(NSString *)title url:(NSString *)url description:(NSString *)description;

/**
 * Facebook分享图片
 * @param image 要分享的图片
 */
+ (void)shareImage:(UIImage *)image;



@end

NS_ASSUME_NONNULL_END
